Ziel: Das Finden von Substratklassen mit genügend Samples, am Besten Automatisch. Clustering hat nicht sehr gut funktioniert, vermutlich wegen der Überlappung zwischen den Substratklassen und wegen den verschiedenen Transportmechanismen.
Nun wollte ich diese Überlappungen und die logischen Beziehungen zwischen den Molekülen direkt darstellen, und mit einem Algorithmus die Daten so weit filtern, bis ich bei ca. 10-20 Substratklassen angekommen bin.
Diese Plots habe ich für vier Organismen, und für einen Meta-Datensatz aus allen vier Organismen erstellt.
Letzte Woche habe ich die Ancestors der jeweiligen Substrate hinzugefügt.
Dazu habe ich ausschließlich “is_a” relations zwischen molekülspezies benutzt, und nur Chebi-Einträge mit 3/3 Sternen benutzt (manuell überprüft).
Vorher hatte ich die Overlap Heatmaps und die Graphen nur mit den Daten erstellt, mit denen die proteine tatsächlich annotiert sind.
So kann es z.B. passieren, dass ein Glucose-Transporter nur als solcher eingetragen ist, allerdings nicht als Hexose/Zucker/Kohlenhydrat-Transporter. Letztere eignen sich wegen der höheren Anzahl an Samples evtl. besser als Substratklassen.
Nun hatte ich das Problem, dass ich hunderttausende zusätzliche Chebi-Terms im Graphen hatte. In mehreren Schritten habe ich diese Daten gefiltert, u.a. nach Substraten mit mehr als 20 Proteinen, und ich habe alle neu hinzugefügten Chebi-Terms entfernt.
Das Entfernen aller neu hinzugefügten Chebi-Terms könnte auch potentielle Substrat-Klassen entfernen. Ich sollte diese wieder hinzufügen, sobald ich eine automatische Methode implementiert habe.
Variablen:
Wenn ein Chebi-Term einen Overlap von 100% mit einem abstrakteren Chebi-Term hat, dann machen wir einen Eintrag in die Matrix.
Nun hat ein abstrakter Term mit n annotierten Proteinenen drei Arten von Kindern:
Nun könnte man die verwandten Chebi-Terms miteinender kombinieren. Als nächstes würde ich mir dazu einen Algorithmus überlegen, der alle Fälle behandelt, um die Chebi-Terms auf 10-20 Substratklassen und dazu gehörigen Proteinen zu reduzieren (TODO).
In allen Datensätzen scheint sich ein ähnliches Cluster im Netzwerk abzuzeichnen.
Die Matrizen/Heatmaps sehen nun besser aus, die “chemical entity” ist nun der häufigste Term, was logisch ist. Überraschend ist die Anzahl der Ionen. Im Menschen gibt einen Overlap von 1000/1078 zwischen “chemical entity” und “ion”. Außerdem gibt es in allen Datensätzen einen overlap von 100% zwischen Aminosäure und Ion. Das könnte daran liegen, dass es einen Pfad zwischen Aminosäure, bzw. der ionisierten Form eines Moleküls und Ion gibt, oder an einem Fehler in der Pipeline. Als nächstes sollte ich versuchen, das nachzuvollziehen (TODO).